home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Palettes / IBMole / IBMole.m < prev    next >
Text File  |  1995-04-12  |  3KB  |  184 lines

  1. //
  2. //    IBMole.h -- a way to play with IB via disributed objects
  3. //        Written by Montgomery Zukowski
  4. //        Copyright (c) 1994 by Montgomery Zukowski.
  5. //                Version 1.0.  All rights reserved.
  6. //
  7. //        This notice may not be removed from this source code.
  8. //
  9. //    This object is included in the MiscKit by permission from the author
  10. //    and its use is governed by the MiscKit license, found in the file
  11. //    "LICENSE.rtf" in the MiscKit distribution.  Please refer to that file
  12. //    for a list of all applicable permissions and restrictions.
  13. //    
  14.  
  15. #import "IBMole.h"
  16.  
  17. @interface Object(Superfy)
  18. -becomeSuperclass;
  19. @end 
  20.  
  21. @implementation Object(Superfy)
  22. -becomeSuperclass
  23. {    //this was helpful in turning SmartFields into TextFields..
  24.     //in general isa hacking is frowned upon...
  25.     //changing yourself to a subclass can really screw things up!
  26.     self->isa = [self superclass];
  27.     return self;
  28. }
  29. @end
  30.  
  31. @interface WindowTemplate:Object
  32. {
  33.     struct _NXRect windowRect;
  34.     int windowStyle;
  35.     int windowBacking;
  36.     int windowButtonMask;
  37.     int windowEventMask;
  38.     STR windowTitle;
  39.     STR viewClass;
  40.     STR windowClass;
  41.     id windowView;
  42.     id realObject;
  43.     struct _windowFlags
  44.     {
  45.     unsigned hideOnDeactivate:1;
  46.     unsigned dontFreeWhenClosed:1;
  47.     unsigned defer:1;
  48.     unsigned oneShot:1;
  49.     unsigned visible:1;
  50.     unsigned wantsToBeColor:1;
  51.     unsigned dynamicDepthLimit:1;
  52.     unsigned autoPositionMask:6;
  53.     unsigned savePosition:1;
  54.     unsigned _PADDING:2;
  55.     }  windowFlags;
  56.     id extension;
  57.     struct _NXSize minSize;
  58. }
  59.  
  60. + initialize;
  61. - read:(void *)fp16;
  62. - write:(void *)fp16;
  63. - awake;
  64. - nibInstantiate;
  65. - free;
  66.  
  67. @end
  68.  
  69. @interface WindowTemplate(WindowFlags)
  70.  
  71. - setFreeWhenClosed:(BOOL)yesNo;
  72. - setHideOnDeactivate:(BOOL)yesNo;
  73. - setVisibleAtLaunchTime:(BOOL)yesNo;
  74. - setDeferred:(BOOL)yesNo;
  75. - setOneShot:(BOOL)yesNo;
  76. - setDynamicDepthLimit:(BOOL)yesNo;
  77. - setWantsToBeColor:(BOOL)yesNo;
  78.  
  79. @end
  80.  
  81. @implementation WindowTemplate(WindowFlags)
  82.  
  83. - setFreeWhenClosed:(BOOL)yesNo;
  84. {
  85.     windowFlags.dontFreeWhenClosed = (unsigned)(!yesNo);
  86.     return self;
  87. }
  88.  
  89. - setHideOnDeactivate:(BOOL)yesNo;
  90. {
  91.     windowFlags.hideOnDeactivate = (unsigned)yesNo;
  92.     return self;
  93. }
  94.  
  95. - setVisibleAtLaunchTime:(BOOL)yesNo;
  96. {
  97.     windowFlags.visible = (unsigned)yesNo;
  98.     return self;
  99. }
  100.  
  101. - setDeferred:(BOOL)yesNo;
  102. {
  103.     windowFlags.defer = (unsigned)yesNo;
  104.     return self;
  105. }
  106.  
  107. - setOneShot:(BOOL)yesNo;
  108. {
  109.     windowFlags.oneShot = (unsigned)yesNo;
  110.     return self;
  111. }
  112.  
  113. - setDynamicDepthLimit:(BOOL)yesNo;
  114. {
  115.     windowFlags.dynamicDepthLimit = (unsigned)yesNo;
  116.     return self;
  117. }
  118.  
  119. - setWantsToBeColor:(BOOL)yesNo;
  120. {
  121.     windowFlags.wantsToBeColor = (unsigned)yesNo;
  122.     return self;
  123. }
  124.  
  125. @end
  126.  
  127. @implementation  IBMole
  128.  
  129. -init
  130. {
  131.     tunnel = [NXConnection registerRoot:self withName:"IBMole"];
  132.     [tunnel runFromAppKit];
  133.     return self;
  134. }
  135.  
  136. - free
  137. {
  138.     if (docList != nil)
  139.     {
  140.         docList = [docList free];
  141.     }
  142.     return [super free];
  143. }
  144.  
  145. -ibApp
  146. {
  147.     return NXApp;
  148. }
  149.  
  150. -docList
  151. {
  152.     id windowList;
  153.     id delegate;
  154.     int z;
  155.     
  156.     if (docList == nil)
  157.     {
  158.         docList = [[List alloc] init];
  159.     }
  160.     else
  161.     {
  162.         [docList empty];
  163.     }
  164.     windowList = [NXApp windowList];
  165.     z = [windowList count];
  166.     while (z--)
  167.     {
  168.         delegate = [[windowList objectAt:z] delegate];
  169.         if ([delegate respondsTo:@selector(document)])
  170.         {
  171.             [docList addObjectIfAbsent:[delegate document]];
  172.         }
  173.     }
  174.     return docList;
  175. }
  176.  
  177. - getClass:(const char *)aClassName
  178. {
  179.     return objc_getClass(aClassName);
  180. }
  181.     
  182.  
  183. @end
  184.